package moniter

// TimesStat 时间占用  src/github.com/shirou/gopsutil/cpu/cpu.go
type TimesStat struct {
	CPU       string  `json:"cpu"`    // CPU 标识，如果是总的，该字段为cpu-total，否则为cpu0、cpu1...；
	User      float64 `json:"user"`   //用户时间占用（用户态）；
	System    float64 `json:"system"` //系统时间占用（内核态）；
	Idle      float64 `json:"idle"`   //空闲时间；
	Nice      float64 `json:"nice"`
	Iowait    float64 `json:"iowait"`
	Irq       float64 `json:"irq"`
	Softirq   float64 `json:"softirq"`
	Steal     float64 `json:"steal"`
	Guest     float64 `json:"guest"`
	GuestNice float64 `json:"guestNice"`
}

// PartitionStat src/github.com/shirou/gopsutil/disk/
type PartitionStat struct {
	Device     string `json:"device"`     //分区标识，在 Windows 上即为C:这类格式
	Mountpoint string `json:"mountpoint"` //挂载点，即该分区的文件路径起始位置；
	Fstype     string `json:"fstype"`     //文件系统类型，Windows 常用的有 FAT、NTFS 等，Linux 有 ext、ext2、ext3等；
	Opts       string `json:"opts"`       //选项，与系统相关。
}

// UsageStat src/github.com/shirou/gopsutil/disk.go
type UsageStat struct {
	Path              string  `json:"path"`        //路径，传入的参数
	Fstype            string  `json:"fstype"`      //文件系统类型；
	Total             uint64  `json:"total"`       //该分区总容量；
	Free              uint64  `json:"free"`        //空闲容量；
	Used              uint64  `json:"used"`        //已使用的容量；
	UsedPercent       float64 `json:"usedPercent"` //使用百分比。
	InodesTotal       uint64  `json:"inodesTotal"`
	InodesUsed        uint64  `json:"inodesUsed"`
	InodesFree        uint64  `json:"inodesFree"`
	InodesUsedPercent float64 `json:"inodesUsedPercent"`
}

/*
	字段含义很容易理解，PgIn/PgOut/PgFault这三个字段我们重点介绍一下。交换内存是以页为单位的，如果出现缺页错误(page fault)，操作系统会将磁盘中的某些页载入内存
	同时会根据特定的机制淘汰一些内存中的页。PgIn表征载入页数，PgOut淘汰页数，PgFault缺页错误数。
*/
// SwapMemoryStat src/github.com/shirou/gopsutil/mem/
type SwapMemoryStat struct {
	Total       uint64  `json:"total"`
	Used        uint64  `json:"used"`
	Free        uint64  `json:"free"`
	UsedPercent float64 `json:"usedPercent"`
	Sin         uint64  `json:"sin"`
	Sout        uint64  `json:"sout"`
	PgIn        uint64  `json:"pgin"`
	PgOut       uint64  `json:"pgout"`
	PgFault     uint64  `json:"pgfault"`
}
